import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import java.io.File;

public class check_bill {
    public static void main(String[] args) {
        String path1 = "C:\\Users\\jinxiangyu\\Desktop\\demo1.xls";
        String path2 = "C:\\Users\\jinxiangyu\\Desktop\\demo2.xls";
//
//        // 解析路径的file文件
//        Workbook workbook1 = null;
//        Workbook workbook2 = null;
//        Map<String,String> map1 = new HashMap<>();
//        Map<String,String> map2 = new HashMap<>();
//        try {
//            workbook1 = Workbook.getWorkbook(new File(path1));
//            workbook2 = Workbook.getWorkbook(new File(path2));
//            // 获取第一张工作表
//            Sheet sheet1 = workbook1.getSheet(0);
//            Sheet sheet2 = workbook2.getSheet(0);
//            // 循环获取每一行数据 因为默认第一行为标题行，我们可以从 1 开始循环，如果需要读取标题行，从 0 开始
//            // sheet.getRows() 获取总行数
//            for (int i = 1; i < sheet1.getRows(); i++) {
//                // 获取第一列的第 i 行信息 sheet.getCell(列，行)，下标从0开始
//                String id = sheet1.getCell(0, i).getContents();
//                // 获取第二列的第 i 行信息
//                String value = sheet1.getCell(1,i).getContents();
//
////                System.out.println(id+"  "+value);
//
//                map1.put(id,value);
//
//                // 存入本地或者是存入对象等根据给人需求自己定就行,创建对象存储，然后加入集合中
//                // ......
//            }
//
//            for (int i = 1; i < sheet2.getRows(); i++) {
//                // 获取第一列的第 i 行信息 sheet.getCell(列，行)，下标从0开始
//                String id = sheet2.getCell(0, i).getContents();
//                // 获取第二列的第 i 行信息
//                String value = sheet2.getCell(1,i).getContents();
//
////                System.out.println(id+"  "+value);
//
//                map2.put(id,value);
//
//                // 存入本地或者是存入对象等根据给人需求自己定就行,创建对象存储，然后加入集合中
//                // ......
//            }

        Map<String,String> map1 = read_from_xls(path1,1);
        Map<String,String> map2 = read_from_xls(path2,1);

        check(map1,map2);
    }

    private static void check(Map<String,String> c1,Map<String,String> c2){
//        boolean result = false;
        for (String str1 : c1.keySet()){
            for (String str2 : c2.keySet()){
                if (str1.equals(str2)){
                    String value1 = c1.get(str1);
                    String value2 = c2.get(str2);
                    if (!value1.equals(value2)){
                        System.out.println(str1+"   "+value1);
                        System.out.println(str2+"   "+value2);
//                        return false;
                    }
                }
            }
        }
//        return true;
    }

    private static Map<String,String> read_from_xls(String path,int sheet_number){
        Workbook workbook1 = null;
        Map<String,String> map1 = new HashMap<>();

        try {
            workbook1 = Workbook.getWorkbook(new File(path));
            Sheet sheet1 = workbook1.getSheet(sheet_number);
            // 循环获取每一行数据 因为默认第一行为标题行，我们可以从 1 开始循环，如果需要读取标题行，从 0 开始
            // sheet.getRows() 获取总行数
            for (int i = 1; i < sheet1.getRows(); i++) {
                // 获取第一列的第 i 行信息 sheet.getCell(列，行)，下标从0开始
                String id = sheet1.getCell(0, i).getContents();
                // 获取第二列的第 i 行信息
                String value = sheet1.getCell(1,i).getContents();

//                System.out.println(id+"  "+value);

                map1.put(id,value);

                // 存入本地或者是存入对象等根据给人需求自己定就行,创建对象存储，然后加入集合中
                // ......
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (BiffException e) {
            e.printStackTrace();
        }
        return map1;

    }
}
